home *** CD-ROM | disk | FTP | other *** search
- /* This little demo program shows how to load up a XFA Anim
- ** And to save it as IFF frames.
- **
- ** This code's been written in AmigaE by Fabio Rotondo.
- **
- ** Public domain program.
- **
- ** Written for ClassX.
- **
- */
-
- MODULE 'xfa','libraries/xfa','dos/rdargs','intuition/screens',
- 'libraries/iffparse','graphics/gfx'
-
- DEF hd:PTR TO xfa_head
- DEF m:mem
- DEF iff:PTR TO iffhandle
- DEF bmp0:PTR TO bitmap, bmp1:PTR TO bitmap
- DEF sc0:PTR TO screen, sc1:PTR TO screen
- DEF mode, cnt
-
-
- PROC main()
- DEF args=NIL:PTR TO LONG, rdargs
-
- WriteF('XFA2IFF V0.1 - By Fabio Rotondo.\n')
-
- rdargs:=ReadArgs('NAME/A', args, NIL)
- IF rdargs
- IF (xfabase:=OpenLibrary('xfa.library',0))
- conv(args[0])
- WriteF('Operation Complete.\nFrames are in t:\n')
- CloseLibrary(xfabase)
- ELSE
- WriteF('Cannot Open xfa.library\n')
- ENDIF
- FreeArgs(rdargs)
- ELSE
- WriteF('Bad Args.\n')
- ENDIF
- CleanUp(0)
- ENDPROC
-
- PROC conv(txt:PTR TO CHAR)
- DEF swp
-
- IF iff:=XfA_OpenRead(txt,0,0)
- hd:=XfA_HeadPtr()
- mode:=XfA_GetPackMode() AND XFA_MODEI
-
- IF (sc0:=OpenS(hd.bytesperrow*8, hd.rows, hd.depth, hd.modeid,'',0))
- bmp0:=sc0.bitmap
- XfA_UseCMap(sc0,0)
- IF mode=0
- IF (sc1:=OpenS(hd.bytesperrow*8, hd.rows, hd.depth, hd.modeid,'',0))
- bmp1:=sc1.bitmap
- XfA_UseCMap(sc1,0)
- ENDIF
- ENDIF
-
- WHILE XfA_ReadFrame(iff, {m})=0
- XfA_UnPackBitMap (bmp0, m.ptr)
- XfA_FreeFrame ({m})
-
- IF mode
- IF XfA_ReadFrame(iff, {m})=0
- XfA_UnPackBitMap(bmp0, m.ptr)
- XfA_FreeFrame ({m})
- ENDIF
- ENDIF
- XfA_SaveScreen (sc0, StringF('t:frame\d',cnt))
-
- IF mode=0
- swp:=sc0
- sc0:=sc1
- sc1:=swp
-
- swp:=bmp0
- bmp0:=bmp1
- bmp1:=swp
- ENDIF
-
- INC cnt
- ENDWHILE
- XfA_CloseRead (iff)
- ENDIF
- ENDIF
- ENDPROC
-
-